#ifndef GENETIC_ALGORITHM_H
#define GENETIC_ALGORITHM_H

#include "algorithm.h"


class GeneticAlgorithm : public Algorithm{
	public:
		GeneticAlgorithm( const char* );
		~GeneticAlgorithm();
		
		int* randomInit();
		int assessFitness(int*);
		void copySolution(int*, int*);
		int getQualityOfBest();
		void VNS(int*);
		int* changeN(int*, int);
		void deletePopulation(int**);
		int rouletteSeletion(int**, int*);
		void crossover(int* i1, int* i2);
		int* mutate(int* i);
		void solve();
		int pickOneSet(bool*);
		
	private:
		int n; //number of individuals
		int** population;
		int quality_best;
		
};

#include "genetic_algorithm.cpp"

#endif